﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ServiceModel;

namespace ChatApp.Service
{
    public static class ChatAppServiceGlobal
    {
        /// <summary>
        /// int: idUser
        /// </summary>
        public static Dictionary<string, IClientCallback> listClientCallBack;

        public static void RegisterClient(string userName)
        {
            // Nếu trên service List enpoint chưa tồn tại thì khởi tạo mới
            if (listClientCallBack == null)
                listClientCallBack = new Dictionary<string, IClientCallback>();

            // Nếu danh sạc Enpoint > 0 thì xóa endpont của user đăng nhập
            if (listClientCallBack.Count > 0)
            {
                listClientCallBack.Remove(userName);
            }

            // Add endpoint cho user
            IClientCallback iClientCallback = OperationContext.Current.GetCallbackChannel<IClientCallback>();

            listClientCallBack.Add(userName, iClientCallback);

            // Cập nhật IClientCallBack vào bảng User

            byte[] toEncodeAsBytes = ObjectToByteArray((Object)iClientCallback)

            encData_byte = System.Text.Encoding.UTF8.GetBytes(data);
            string encodedData = Convert.ToBase64String(encData_byte);
            return encodedData;

        }

        private static byte[] ObjectToByteArray(Object obj)
        {
            if (obj == null)
                return null;
            BinaryFormatter bf = new BinaryFormatter();
            MemoryStream ms = new MemoryStream();
            bf.Serialize(ms, obj);
            return ms.ToArray();
        }
    }
}